// webpack配置文件，引导webpack做指定的打包行为
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const webpack = require('webpack')
module.exports = {
  mode:'development',
  entry:'./src/index.js',  //指定被打包的文件
  output:{
    path:path.resolve(__dirname,'dist'),  //指定打包结果文件的存放路径
    filename:'bundle.js'  
  },
  plugins:[
    new HtmlWebpackPlugin({
      filename:'index.html',  //指定生成的html名称,为了跟devServer配合使用，需要使用index
      template:'./public/index.html'  //让插件参考指定模板文件生成一个相同结构的html
    }),
    new webpack.ProvidePlugin({  //解决React is not defined问题
        "React": "react",
    }),
  ],
  devServer:{  //开发服务配置
    port:8088,
    open:true
  },
  module: {
    rules: [  //配置loader的规则
      {
        test: /\.js|jsx$/,  //指定需要当前loader解析的文件类型
        exclude: /node_modules/, //讲某些文件夹排除在loader解析范围之外
        use: {
          loader: "babel-loader",
          options: {
            presets: ['@babel/preset-react'] //指定loader需要调用的预设包
          }
        }
      },
      {
        test: /\.css$/,
        use: [ 'style-loader', 'css-loader' ]
      }
    ]
  },
  resolve:{
    extensions:['.js','.jsx']  //让webpack自动补全文件后缀
  }
}